package com.softeem.musicserver.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 统一返回结果对象：用于后端向前端提供统一数据结构
 * DAO: Data Access Object
 * DTO: Data Transfer Object（数据传输对象）
 */
@Schema(description = "统一范湖结果")
@Data
@Accessors(chain = true) /*开启链式编程*/
public class R {

    /**
     * 状态码，例如 0-成功 -1-失败   40001-权限不足  50001-系统异常 ...
     */
    @Schema(description = "状态码，例如 0-成功 -1-失败   40001-权限不足  50001-系统异常",example = "0")
    private Integer code;
    /**
     * 成功或失败标记 true-成功  false-失败
     */
    @Schema(description = "成功或失败标记 true-成功  false-失败",example = "true")
    private boolean success;
    /**
     * 附加文本信息 ，例如：请求成功/请求失败/xxx异常
     */
    @Schema(description = "附加文本信息 ，例如：请求成功/请求失败/xxx异常",example = "请求成功")
    private String msg;
    /**
     * 返回到客户端的附加数据
     */
    @Schema(description = "返回到客户端的附加数据,例如对象或列表集合")
    private Object data;
    @Schema(description = "数据的总条数,用于前端分页页码计算依据")
    private Long count;

    /**
     * 定义成功统一返回结果
     * @return
     */
    public static R ok(){
        R r = new R();
        r.code = 0;
        r.msg = "执行成功";
        r.success = true;
        return r;
    }

    /**
     * 定义失败统一返回结果
     * @return
     */
    public static R fail(){
        R r = new R();
        r.code = -1;
        r.msg = "执行失败";
        r.success = false;
        return r;
    }

}
